package com.heihei.decompression;

import com.heihei.util.CommandUtil;
import com.heihei.util.FileUtilF;

import java.io.File;
import java.io.IOException;
import java.util.Scanner;

/**
 *  压缩 直接执行
 *
 * @version 1.0
 * @since JDK1.8
 * @author duanhengfei
 * @date 2021年01月28日 09:37:42
 */
public class ComDemoExe {

    public static void main(String[] args) throws IOException {
        startComExe();
        //测试压缩方法
//        comPress(new File("E:\\飞\\@@编程相关"), "hello");
//        System.out.println("OK");
    }

    /**
     * 开始交互式压缩（压缩当前文件夹下的所有文件夹）
     *
     * @param
     * @Return
     * @throws
     * @author duanhengfei
     * @date 2021年01月31日 13:30:02
     */
    private static void startComExe() throws IOException {
        System.out.println("请输入源文件目录");
        File validSrcDir = FileUtilF.getValidSrcDir();
        Scanner sc = FileUtilF.getSc();
//        System.out.println("是否要设置密码");
//        String isPassword = sc.nextLine();
//        if("Y".equalsIgnoreCase(isPassword) || "YES".equalsIgnoreCase(isPassword)) {
//            System.out.println("请输入密码（注意：密码会忽略掉前后的空格）");
//            ComDemo.setPassword(sc.nextLine().trim());
//        } else {
//            ComDemo.setPassword(null);
//        }
        System.out.println("是否需要文件列表");
        String isOutLine = sc.nextLine();
        System.out.println("是否需要删除源文件");
        String isDeleteSource = sc.nextLine();
        File[] childFiles = validSrcDir.listFiles();
        for (File childFile : childFiles) {
            if(childFile.isDirectory()) {
                //拼接命令
                //获取一行命令
                System.out.println(">>==============================开始压缩：" + childFile.getAbsolutePath() + "==============================<<");
                String commandLineStr = ComDemo.getLineComand(validSrcDir, childFile, false);
                CommandUtil.exeCmd(commandLineStr);
                if("Y".equalsIgnoreCase(isOutLine) || "YES".equalsIgnoreCase(isOutLine)) {
                    FileUtilF.outLineOneLevelFile(childFile);
                }
                if("Y".equalsIgnoreCase(isDeleteSource) || "YES".equalsIgnoreCase(isDeleteSource)) {
                    FileUtilF.delMultiFolder(childFile);
                }
//                System.out.println(">>压缩完成：" + childFile.getAbsolutePath());
//                System.out.println("√");
            }
        }
        System.out.println("End==============================全部压缩完成，请前往目标目录查看：" + validSrcDir.getAbsolutePath() + "==============================End");
    }

    /**
     * 指定文件夹，将其压缩成压缩包，压缩的压缩包，放置在同级目录中
     *
     * @param fileDir 要压缩的文件夹/文件
     * @param pwd 密码（如果不设置密码，填空即可）
     * @Return
     * @throws
     * @author duanhengfei
     * @date 2021年01月31日 13:13:34
     */
    public static void comPress(File fileDir, String pwd){
        String command = ComDemo.getLineComand(fileDir, false, pwd);
        CommandUtil.exeCmd(command);
    }

    /**
     * 指定文件夹，将其压缩成压缩包，压缩的压缩包，放置在同级目录中（不设置密码，可以用这个方法）
     *
     * @param fileDir 要压缩的文件夹/文件
     * @Return
     * @throws
     * @author duanhengfei
     * @date 2021年01月31日 13:13:34
     */
    public static void comPress(File fileDir){
        String command = ComDemo.getLineComand(fileDir, false, null);
        CommandUtil.exeCmd(command);
    }
}